6884
11171
Jag har ett arraystatistiknamn som
äpple
X
banan
Y
Kiwi
z
Jag måste lägga äpple, banan och kiwi i en matris Frukt och X, Y och Z i en grupp som kallas alfabet.
Någon enkel C # -mekanism för det tack? 
Använd IEnumerable . Överbelastning som levererar indexet.
var fruits = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alfabet = statsnamn. var ((s, i) => i% 2! = 0). ToArray ();
|
Stulen från hur man får alternativa element med hjälp av Enumerable in C #
var frukter = myArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alfabet = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Om jag har förstått ifrågasätter du rätt vad du vill är väldigt enkelt:
Du vill placera frukter i en mängd olika frukter och samma för alfabet och de visas alternativt i matrisstatistiknamn så:
för (int i = 0, j = 0; i  lista = ny lista  () {"äpple", "X", "banan", "Y", "Kiwi", "z"};
var resultat = lista. Välj ((l, i) => ny {l, i})
.GroupBy (p => p.i% 2)
.Välj (x => x.Select (v => v.l) .ToList ())
.Att lista();
Då har du en lista med listor:
|
lista  frukter = ny lista  ();
lista  alfabetet = ny lista  ();
för (int i = 0; i  everyOther  (IEnumerable  collection)
{
använder (var e = collection.GetEnumerator ()) {
medan (e.MoveNext ()) {
avkastningsavkastning e.Current;
e.MoveNext (); // hoppa över en
}
}
}
Du kan använda System.Linq.Skip för att hoppa över det första elementet.
string [] words = "apple X banana Y Kiwi z" .Split ();
var frukter = alla andra (ord);
var alfabet = alla andra (ord.Skipp (1));
Använd dem bara som en ny samling eller ring .ToArray () eller .ToList () på dem:
foreach (sträng f i frukt)
Console.WriteLine (f);
sträng [] anArray = fruits.ToArray (); // med System.Linq
Nu har du vad du behöver.
Iteratorer är metoder som ger avkastning, se Iteratorer (C # Programmeringsguide). Detta är ett mycket starkt inslag i språket. Du kan:
hoppa över element
dekorera element
ändra beställning
sammanfoga sekvenser (se System.Linq.Concat)
...
|
Här är en arbetskod, förhoppningsvis kommer det att vara till hjälp för dig:
använder System;
använder System.Collections.Generic;
använder System.IO;
med System.Linq;
använder System.Text;
använder System.Threading.Tasks;
namnrymd ReadFile
{
klassprogram
{
statisk ogiltig ReadFile (strängfilPath, List  custumerNames, List  phoneNumbers)
{
string line = string.Empty;
var fileStream = ny StreamReader (filePath);
bool isPhoneNumber = true;
medan ((line = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (line));
isPhoneNumber = falskt;
}
annan
{
custumerNames.Add (rad);
isPhoneNumber = true;
}
}
fileStream.Close ();
}
static void Main (sträng [] args)
{
Console.WriteLine ("Började läsa filen ...");
Lista  custumersNamesList = ny lista  ();
Lista  custumersPhonesNumbers = ny lista  ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Förutsatt att båda listorna har samma längd.
för (int i = 0; i